//调用
// window.mycache.get('/api1').then(res=>{...})

// 1. 保证缓存架构只有一个
if (!window.mycache) {
  // 2.缓存的数据不能直接暴露,通过方法操作缓存
  window.mycache = (function () {
    let cache = {};
    let cacheArr = [];
    return {
      get: function (api) {
        return new Promise((resolve, reject) => {
          if (cache[api]) {
            resolve(cache[api]);
          } else {
            this.set(api)
              .then((res) => {
                // 限制内存的量：先进先出 / 最小使用原则
                if (cacheArr.length > 10) {
                  let _api = cacheArr.shift();
                  this.remove(_api);
                }
                cache[api] = res;
                cacheArr.push(api);
                resolve(res);
              })
              .catch((err) => {
                reject(err);
              });
          }
        });
      },
      set: function (api) {
        return axios.get(api);
      },
      remove: function () {},
    };
  })();
}
